package main

import "fmt"

func Str_1() {
	var nameSelf string = "MYC"
	var ageSelf int = 18
	fmt.Printf("name=%s, age=%d\n", nameSelf, ageSelf)
}

func Str_2() {
	//先声明再赋值
	var nameSelf string
	nameSelf = "DJR"
	fmt.Println(nameSelf)
}

func Str_3() {
	// & 用来获取变量的地址，  * 用来获取指针的值
	var name string
	fmt.Scanf("%s", &name)
	fmt.Printf(name)
}

func Str_4() {
	//变量简写
	// 第一种 省略类型
	var name_1 = "MYC"
	// 第二种 省略声明以及类型
	name_2 := "MYC"
	fmt.Println(name_1, name_2)
	//定义多个变量
	var name_3, name_4, name_5 string
	name_3 = "MMM"
	name_4 = "YYY"
	name_5 = "CCC"
	fmt.Println(name_3, name_4, name_5)
	//定义多个变量2
	var (
		a1 = "string123"
		a2 string
		a3 bool
		a4 float32
	)
	fmt.Println("a1="+a1, "a2="+a2, "a3=", a3, "a4=", a4)
}

// 不同定义变量的区别
// var v1 string    这种定义方式， v1会指向一块内存，内存中的值是原始值
// v2 := "xxxxx"    这种定义方式， v2会指向一块内存，并赋值
